package com.dzl.admin.dao;

import com.dzl.admin.pojo.SysMenu;
import com.dzl.admin.pojo.SysRoleMenu;
import com.dzl.admin.pojo.vo.RoleMenuVo;
import com.dzl.admin.pojo.vo.SysMenuPermissionVo;
import com.dzl.admin.pojo.vo.SysRoleMenuPermissionVo;
import com.dzl.base.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 角色菜单表(SysRoleMenu)表数据库访问层
 *
 * @author caobucao
 * @since 2021-05-13 15:51:46
 */
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {

    /**
     * 批量角色菜单添加
     * @date 2021/5/14 17:59
     * @author caobucao
     * @param roleId 角色id
     * @param menuIds 选中菜单ids
     * @return Integer 影响行数
     */
    Integer insertSysRoleMenuList(@Param("roleId") Integer roleId, @Param("menuIds") String[] menuIds);

    /**
     * 通过角色id删除角色菜单
     * @date 2021/5/17 10:11
     * @author caobucao
     * @param roleId 角色id
     * @return Integer 影响条数
     */
    Integer deleteRoleMenuByRoleId(@Param("roleId") Integer roleId);

    /**
     * 查询角色下的可用菜单LIST
     * @date 2021/5/17 11:38
     * @author caobucao
     * @param roleId 角色id
     * @return java.util.List<com.dzl.userwx.pojo.Menu>
     */
    List<SysMenu> selectMenuListByRoleId(@Param("roleId") Integer roleId);

    /**
     * 获取角色下面所有角色权限
     * @date 2021/5/17 14:55
     * @author caobucao
     * @param roleId  角色id
     * @return java.util.List<com.dzl.role.entity.vo.SysMenuPermissionVo>
     */
    List<SysMenuPermissionVo> selectMenuPermission(@Param("roleId") Integer roleId);

    /**
     * 查询所有菜单及该角色是否可用此菜单
     * @date 2021/5/21 16:33
     * @author caobucao
     * @param roleId  角色id
     * @return java.util.List<com.dzl.menu.pojo.vo.RoleMenuVo>
     */
    List<RoleMenuVo> selectRoleMenuByRoleId(Integer roleId);

    /**
     * 查询所有按钮权限及该角色是否可用此按钮
     * @date 2021/5/21 17:10
     * @author caobucao
     * @param roleId
     * @return java.util.List<com.dzl.role.pojo.vo.SysMenuPermissionVo>
     */
    List<SysRoleMenuPermissionVo> selectMenuPermissionByRoleId(Integer roleId);

    /**
     * 描述:根据角色ID查询菜单ID集合
     * @date 2021/5/12 17:29
     * @author wangchao
     * @Param [roleId] 角色ID
     * @return java.util.List<java.lang.Integer>
     **/
    List<Integer> queryRoleMenuByRoleId(@Param("roleId") Integer roleId);

    /**
     * 描述:根据角色ID查询角色所对应菜单
     * @date 2021/5/12 16:21
     * @author wangchao
     * @Param [roleId] 角色ID   [isEnable]:传null表示查所有菜单，传1表示当该企业是同步数据配置的企业，需要隐藏一些分类，用此字段隐藏
     * @return java.util.List<com.dzl.menu.pojo.Menu> 菜单表信息对象
     **/
    List<SysMenu> queryByRoleIdMenu(@Param("roleId") Integer roleId, @Param("isEnable") Integer isEnable);
}

